Buscar

maquinas multiniveis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 1/30
MÓDULO 1 :
MÁQUINAS MULTINÍVEIS - Introdução
Um computador é uma máquina que pode realizar um determinado conjunto de
funções. As pessoas que utilizam estes computadores desejam fazer certas
atividades que não correspondem diretamente a este conjunto de funções. Porque
as funções implementadas na máquina não correspondem à linguagem humana.
Para que seja possível que os usuários consigam executar as funções que
necessitam, é necessário um processo denominado tradução.
Os primeiros computadores que foram construídos só podiam ser utilizados pelos
engenheiros que os construíram. Era necessário saber exatamente o como os
circuitos eletrônicos (ou eletromecânicos) se interligavam para que se conseguisse
realizar as atividades mais simples. Para realizar qualquer tarefa era necessario
saber programar o computador. E para programar, era necessário conhecer a
arquitetura da máquina.
À medida que surgiu a necessidade de expandir a utilização dos computadores, foi
necessário criar mecanismos que possibilitassem aos usuários realizar atividades
sem que fosse necessário um conhecimento profundo da arquitetura destes
mecanismos.
Imaginemos que o computador possa realizar uma quantidade limitada de
instruções ou comandos. Chamemos este conjunto de linguagem de máquina,
ou de linguagem de baixo nível.
 
 Figura 1 - Máquina
com dois níveis de linguagens
A linguagem que os usuários utilizam não pode se limitar à linguagem de
máquina, ela precisa se aproximar da linguagem humana para atender problemas
do mundo real, chamemos esta segunda linguagem de linguagem de alto nível.
Por estar mais próxima da linguagem humana, uma linguagem de alto nível é
assimilada pelo usuário com maior facilidade. Entretanto, para que possa haver
uma correspondência entre as duas linguagens, é necessário que o segundo
conjunto seja traduzido para o conjunto inicial.
 
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 2/30
Tradução e Interpretação
Existem duas formas de converter um programa de uma linguagem de alto
para uma linguagem de baixo nível. Através do processo conhecido como
tradução, todo o código de alto nível é convertido antes de entrar em
execução. Nesse processo, o código de alto nível não é executado. Já no
processo conhecido como interpretação, o código de alto nível é executado
por um software denominado interpretador porque é convertido para a
linguagem de máquina durante a execução do programa.
Um algoritmo escrito em um código interpretado é processado mais
lentamente do que o mesmo código após ser traduzido. Porque, na tradução,
o código de máquina já está convertido, necessitando apenas ser executado. Já
no processo de interpretação, o código roda mais lentamente, porque é
convertido em tempo de execução. Ou seja, na interpretação o código
sempre é convertido e executado, enquanto o código que sofreu o processo
de tradução já está pronto para apenas ser executado. Porque a conversão
precisa ocorrer uma única vez.
Este processo ocorre diversas vezes dentro de um computador. A história da
evolução dos computadores é um processo de adição de níveis de tradução ou
de interpretação. Se os primeiros computadores só podiam ser utilizados pelos
engenheiros que os construíram, os computadores atuais podem ser utilizados
por pessoas com um mínomo de conhecimento técnico. Isto só é possível
porque as necessidades destes usuários são submetidas a vários níveis de
conversão até chegar até uma instrução que o computador consiga
efetivamente executar através de impulsos elétricos.
 
Este processo de evolução nos levou ao computador contemporâneo, que possui
diversos níveis, por isso o denominamos máquina multiníveis. A interação entre
cada um dos níveis corresponde a um tipo de tradução ou de interpretação.
Os computadores atuais são máquinas multiníveis, possuindo ao menos os 6
níveis descritos abaixo:
O nível 0 chamado lógico digital, corresponde aos circuitos eletrônicos que
efetivamente realizam o processamento de informações na forma de impulsos
elétricos dentro do processador. Os circuitos eletrônicos estão já implementados
na forma de portas lógicas, que implementam as operações lógicas elementares.
O nível 1 corresponde à microarquitetura do processador, que são elementos
internos do processador: registradores (que são a memória de alta velocidade
interna do processador) e a ULA (unidade lógica aritmética) que é o elemento do
processador que realiza operações aritméticas simples. Estes registradores são
conectados à ULA para formar um caminho de dados, através do qual os dados
transitam para dentro e fora do processador. Uma operação normal do caminho de
dados consiste em selecionar o conteúdo de um ou dois registradores e submetê-
los à ULA e movimentar o resultado para outro registrador. Quando a
microarquitetura é implementada por um interpretador que converte as
instruções de máquina do nível superior ( nível ISA ) para microinstruções
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 3/30
implementadas diretamente no hardware do microprocessador, temos um
computador CISC ( Complex Instruction Set Computer - Computador com um
Conjunto Complexo de Instruções ). Nesse caso, cada instrução de máquina do
nível ISA é na verdade um microprograma, composto por uma sequência de
microinstruções, que podem ser executadas pelo harware do processador. Essa
tecnologia é usada para fazer um processador ser capaz de executar instruções
complexas por um custo baixo, porque o hardware do processador apenas precisa
ser projetado para executar poucas microinstruções simples. Já quando as
instruções do nível superior ( nível ISA ) implementam apenas operações simples
executadas diretamente pelo hardware do processador, temos um
microprocessador que usa a tecnologia RISC ( Reduced Instruction Set Computer
). Enquanto no passado ( anos 1970 e 1980 ) houve prevalência da tecnologia
CISC, depois passou a haver uma preferência pela tecnologia RISC, que possui
algumas vantagens na otimização do processamento de instruções. Atualmente,
muitos microprocessadores ainda possuem tecnologia CISC para haver
compatibilidade com os softwares já existentes. Os microprocessadores de
dispositivos móveis, como celulares e tablets geralmente usam a tecnologia RISC.
E em sua maioria, são usados os processadores da família ARM ( Advanced Risc
Machine ).
O nível 2 corresponde ao conjunto de instruções suportado pelo processador.
Também é denominado nível ISA ( Instruction Set Architecture - Arquitetura do
Conjunto de Instruções ). O conjunto de instruções corresponde aos comandos
que o processador pode receber de fontes externas. Este conjunto de instruções é
determinado pelo projeto do processador e normalmente não pode ser alterado. O
conjunto de instruções também é comum entre os processadores de uma mesma
família, permitindo assim a interoperabilidade de programas e sistemas
operacionais dentro desta família. É possível produzir uma família de
microprocessadores com diferentes custos e capacidades ( quantidade de
memória cache, por exemplo ), tendo todos a mesma arquitetura no que se refere
ao conjunto de instruções. Como um programa executável pelo processador é
uma sequência dessas instruções, diferentes processadores de uma mesma
família podem todos executar o mesmo programa, sendo que a diferença está na
performance. Um exemplo clássico é o Pentium e o Celeron, dois processadores
da mesma família, tendo portanto níveis ISA iguais. Porém, o Pentium era dotado
de mais memória cache do que o Celeron, tendo performance maior do que esse.
O nível 3 corresponde ao sistema operacional.O SO fornece uma plataforma
que possibilita que programas não tenham que interagir diretamente com o
hardware. Aliás, isto é mandatório em se tratando de sistemas multitarefa. Não é
possível existir um sistema multitarefa sem que exista um elemento arbitrando o
acesso ao hardware essa função é do sistema operacional. Em sistemas
computacionais modernos, todo acesso ao hardware é feito através do sistema
operacional. As funções do sistema operacional são: funcionar como interface
entre o software e os periféricos por meio de drivers que estabelecem as regras
de comunicação, gerenciar o funcionamento de diversos processos concorrentes (
multitarefa ), interrompendo a execução de um processo para prosseguir com a
execução de outro processo, impedindo que um processo acesse endereços de
memória reservados a outro processo ( o que poderia levar a travamentos, ou a
códigos maliciosos ), funcionar como um ambiente de interface amigável ao
usuário leigo, gerenciar um sistema de arquivos, entre outros atributos. Exemplos
de Sistemas Operacionais são o Windows, o MS-DOS, e os baseados no Sistema
Operacional Unix: o Linux, Android, MacOS-X e iOS.
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 4/30
A interface do S.O. com o usuário pode ser por meio de um shell de comandos
escritos ou por uma interface gráfica ( GUI - Graphic User Interface - Interface
Gráfica com o Usuário ).
O nível 4 corresponde à linguagem de montagem também conhecida como
Assembly Language. A linguagem de montagem ou assembly é uma linguagem
altamente dependente da plataforma, ou seja, processadores diferentes ou de
famílias diferentes possuem linguagens de montagem diferentes incompatíveis
entre si. Ela também contém códigos para acessar chamadas do Sistema
Operacional. Um programa escrito em linguagem de montagem só pode ser usado
em uma determinada plataforma ou família de processadores, funcionando no
mesmo S.O.. Entretanto, a grande maioria das linhas de um código fonte escrito
em assembly são simplesmente instruções do nível ISA descrito na forma de texto
ao invés de um código binário. Os opcodes do nível ISA quando descritos em
linguagem assembly são denominados mnemônicos, porque são abreviações das
operações, mais fáceis de um ser humano lembrar do que uma sequência de bits.
O nível 5 corresponde à linguagem orientada a problemas ou linguagem de
alto nível. Este tipo de linguagem é de assimilação mais fácil e menos
dependente da plataforma em for usada, ela deve ser traduzida (compilada) para
um formato que o sistema operacional consiga interpretar e enviar para os níveis
mais baixos da máquina multiníveis. Quanto mais alto o nível de uma linguagem,
maior será a produtividade, pois é mais fácil implementar algoritmos complexos.
O desenvolvedor pode ficar mais focado no algoritmo em si, do que nos detalhes
da arquitetura da máquina, o que melhora a produtividade e a facilidade de
manutenção do código.
 
 
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 5/30
 
A conversão entre níveis abaixo do sistema operacional são necessariamente
interpretados. Enquanto os níveis superiores geralmente são traduzidos (
embora também possam ser interpretados ). A tradução da linguagem de
montagem ( assembly ) para um programa executável pelo sistema operacional é
denominada montagem. E é realizada por um programa chamado montador (
assembler ). Já o processo de tradução de uma linguagem de alto nível (
orientada ao problema ) para linguagem assembly é realizada por um software
denominado compilador. Existem compiladores linguagens como C, C++, Pascal
e outras linguagens de alto nível. O código compilado pode ser ligado a outros
códigos compilados que podem inclusive já existir na forma de bibliotecas. O
software que realiza essa ligação é denominado ligador ( linker ou link-editor ).
Já o programa existente no pacote de aplicativos do sistema operacional cuja
função é possibilitar a execução do código de um programa executável
armazenado em arquivo é denominado carregador ( loader ).
 
 ESTRUTURA DE UM COMPUTADOR
Em primeiro lugar, vamos definir quais devem ser os componentes básicos que
definem um computador.
Um computador é uma máquina de processar informações, para tanto, precisa de
um processador lógico, cuja função é realizar operações funcionais sobre dados
de entrada, devolvendo dados de saída.
De nada adiantaria haver capacidade de processamento sem uma memória que
armazena dados. Porque não é possível haver processamento sem uma memória
para armazenar os dados de entrada, os dados de saída, ou os dados que estão
sendo processados.
Também é necessário haver comunicação com o mundo externo, por onde os
dados de entrada são inseridos, ou por onde os dados de saída podem ser
exibidos ao operador humano ou ainda enviados a outro dispositivo. Tais
componentes constituem os periféricos de E/S ( E/S = Entrada e Saída, ou I/O
= Input/Output ). Os periféricos podem servir de interface com o usuário (
monitor, mouse e teclado, por exemplo ), de interface com linhas de comunicação
( uma placa de rede, módulo Wi-Fi ou módulo bluetooth, por exemplo ),
periféricos de armazenamento ( o drive do HD - disco rígido, SSDs - drives de
estado sólido, flash-drives, ou drives de mídia óptica como DVDs ou CDs ).
Processador, Memórias e Periféricos precisam naturalmente comunicar-se entre si,
permitindo que dados sejam enviados, por exemplo, da memória para o
processador ou vice-versa. Essa comunicação interna é realizada por um sistema
de barramentos.
Qualquer dispositivo programável cuja estrutura seja a da figura abaixo pode ser
considerado um computador. Desde um supercomputador de milhões de dólares a
um chip microcontrolador que custa centavos de dólar.
 
 
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 6/30
 
 
MÁQUINAS MULTINÍVEIS - APROFUNDANDO OS CONCEITOS
 
Os computadores atuais são compostos por circuitos eletrônicos digitais. Tais
circuitos baseiam-se em um componente eletrônico relativamente simples
chamado transistor. O transistor opera basicamente como uma chave digital, por
onde uma corrente elétrica pode passar ou não. Com esses dois estados possíveis
é pode-se implementar circuitos que realizam operações lógicas binárias.
 
É natural pensar que, quanto mais complexas as operações realizadas pelo
processador de um computador, mais complexos devem ser seus circuitos
internos. Complexidade geralmente significa alto custo ( elevado número de
componentes que aumenta o custo de produção ) e baixa confiabilidade ( elevado
número de pontos onde falhas podem ocorrer ).
 
Portanto, as operações que as instruções que uma CPU pode realizar geralmente
são bem simples. Operações elementares como "some dois números" ou "carregar
um dado presente na memória".
 
Ou seja, a linguagem da máquina é compostas por instruções bem
elementares.
 
Um programa de computador, por mais complexa seja a tarefa que realiza, é
composto por um número elevado dessas instruções simples na sequência
apropriada. O programa nada mais é do que uma sequência de passos
elementares que, implementados de uma forma correta, levam à execução das
tarefas muitas vezes bem complexas..
 
É claro que, se a tarefa a ser realizada é complexa e as instruções disponíveis são
bem simples, um programa acaba possuindo um grande número de instruções.
Isso torna o fato de se programar em tais linguagens uma tarefa razoavelmente
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 7/30
penosa para programadores humanos. Além é claro do fato de os dados estarem
representados na forma digital binária.
 
A maioria dos microprocessadores possui um "vocabulário" bemrestrito de
instruções. Ao contrário da linguagem humana, que possui um amplo vocabulário.
 
Já que um programa é constutuído por uma grande sequência de instruções
simples, e as instruções estão na forma binária, a programação em linguagem de
máquina é trabalhosa, complexa e propensa a erros.
 
Criar um computador cujo hardware é capaz de processar instruções mais
complexas ( uma linguagem mais próxima da humana ), por outro lado, é
economicamente inviável.
 
A solução encontrada pelos projetistas foi criar uma estrutura de camadas ou
níveis de linguagens. Em que os níveis mais baixos possuem uma linguagem mais
próxima da máquina, e os níveis mais altos, uma linguagem mais apropriada para
seres humanos.
 
A tarefa de programar torna-se então mais fácil, e mais produtiva, e os programas
criados em linguagens de alto nível são traduzidos ou interpretados para a
linguagem do nível inferior. Cada nível possui sua linguagem própria, que deve ser
traduzida ou interpretada para o nível inferior, até que no nível mais baixo temos
as operações que são realizadas diretamente pelo hardware baseado em
eletrônica digital.
 
A grande maioria dos computadores atuais é constituída de dois ou mais níveis,
podendo atingir até seis níveis, como apresentado na figura 1.
 
 
 
 
 Figura 1 – Computador com seis níveis
 
 
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 8/30
NÍVEL DE LÓGICA DIGITAL
 
O nível mais baixo (nível 0), ou nível de lógica digital é composto pelo hardware
da máquina. Seus circuitos executam programas na linguagem do nível 1.
Os elementos de interesse desse nível são conhecidos como portas lógicas.
Apesar de constituídas por elementos analógicos tais como transistores, as portas
lógicas podem ser modeladas como dispositivos digitais. Cada porta lógica tem
uma ou mais entradas digitais (sinais que representam os valores lógicos 0 ou 1)
e calcula algumas funções bastante simples sobre essas entradas, como AND (E) e
OR (OU) e NOT ( NEGAÇÃO ). Ou seja, as operações básicas da álgebra
booleana. Cada porta lógica é construída a partir de um conjunto de transistores.
Certa quantidade destas portas pode ser combinada de modo a formar, por
exemplo, uma memória de 1 bit, dispositivo capaz de armazenar o valor 0 ou o
valor 1. Tais dispositivos com capacidade de armazenar um bit de informação, é
muitas vezes denominado latch ou flip-flop. Memórias de 1 bit podem ser
combinadas em grupos de maneira a formar, por exemplo, registradores de 16, 32
ou 64 bits. Cada registrador pode guardar uma única sequência de bits, até um
dado valor máximo. Em resumo, as portas lógicas podem ser combinadas para
formar o principal dispositivo de um sistema computacional, o processador.
 
Obs.: Quando dizemos que um dado processador é de 8, 16, 32 ou 64 bits
geralmente estamos nos referindo ao número de flip-flops de seus registradores
internos.
 
O nível de lógica digital é o mais primitivo. Como constitui o hardware básico de
qualquer computador digital, mesmo os primeiros computadores possuíam esse
nível. É a eletrônica que compõe a máquina física.
Existe um nível ainda mais baixo, quando consideramos os transistores que
compõem as portas lógicas. Portanto, o nível inferior à lógica digital é a a
Microeletrônica. Um nível ainda mais baixo, estuda como os transistores dos
microcircuitos funcionam. Esse nível é a Física do Estado Sólido.
 
 
NÍVEL DE MICROARQUITETURA
 
No nível de microarquitetura encontra-se um conjunto de 8 a 32 registradores
que formam a memória local, e também um circuito denominado ULA ( Unidade 
Lógica e Aritmética ) que é capaz de realizar operações aritméticas simples. Os
registradores são conectados à ULA formando o caminho de dados, por onde os
dados transitam. Tais caminhos de dados são os barramentos internos do
processador.
Este nível também define se as instruções em linguagem de máquina são
interpretadas como microprogramas ( processadores CISC ), ou se são
executadas diretamente pelo hardware ( processadores RISC ).
 
 O nível de microarquitetura também estuda os registradores necessários para a
operação do processador. Muitos desses registradores são invisíveis ou
transparentes para o nível ISA. O programador não possui acesso a eles. Por
exemplo, é necessário um registrador para endereçar as instruções que são
buscadas na memória durante a execução dos programas. Um outro registrador é
necessário para armazenar a instrução que foi buscada na memória, para que seja
decodificada e em seguida, executada.
 Essas operações devem ocorrer independentemente do que é programado nas
instruções da máquina. Fazem parte do projeto do microprocessador e funcionam
da mesmas maneira qualquer que seja a instrução executada.
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 9/30
 
NÍVEL DO CONJUNTO DE INSTRUÇÕES DA MÁQUINA ( ISA )
 
O nível 2 é denominado nível da arquitetura do conjunto de instruções ( ou
nível ISA – Instruction Set Architecture). Este nível contém o conjunto de
instruções que são executadas por meio de microprogramação ( no caso de
processadores CISC ) ou diretamente pelo hardware da máquina ( processadores
RISC ). O nível ISA estabelece o formato e tamanho em bits das instruções, o
número de ciclos de clock que cada instrução consome, e o número de instruções
presentes no processador, bem como o tamanho em bits e os tipos de dados
manipulados pelas instruções. Define por exemplo, se um processador possui uma
instrução de divisão, ou se será necessário desenvolver uma rotina com instruções
de subtração criada por um programador para realizar uma operação de divisão.
 
NÍVEL DO SISTEMA OPERACIONAL ( S.O. )
 
 
O nível 3 é denominado nível do sistema operacional.
Um sistema operacional é um programa que adiciona um conjunto de novas
instruções e funcionalidades, além daquelas suportadas pelo nível ISA.
O conjunto de instruções do nível do sistema operacional é aquele que está
disponível para os programadores de aplicações. Nele estão presentes
praticamente todas as instruções do nível ISA, bem como um novo conjunto de
instruções que o sistema operacional adiciona, conhecidas como chamadas de
sistema.
Uma chamada de sistema ativa um determinado serviço prestado pelo sistema
operacional ao nível da aplicação, como por exemplo, a leitura de um dado de um
arquivo.
O nível do sistema operacional é sempre interpretado, ou seja, quando um
programa do usuário executa uma instrução desse nível, o sistema operacional
executa essa instrução passo a passo.
Outra funcionalidade importante do nível do sistema operacional é a abstração do
hardware. A parte física de uma máquina ( hardware ) pode ser bem diferente do
de outra máquina. Os sinais digitais necessários para executar uma mesma tarefa
podem ser radicalmente diferentes de um modelo de computador para, ou seja,
cada dispositivo pode trabalhar com uma linguagem específica. Entretanto, deve
ser possível que um mesmo programa rode adequadamente em dois
computadores com diferentes estruturas de hardware.
É aí que entra o Sistema Operacional. Ele é um programa especial capaz de
gerenciar o funcionamento de todos os outros, realizando a interpretação entre a
linguagem genérica do software para a linguagem mais específica do hardware.
Por exemplo, todos os programas compatíveis com um dado sistema operacional
podem invocar as mesmas instruções na forma de chamadas de sistema para
escrever um arquivo em um disco. Cabe ao sistema operacional interpretar essa
chamada de sistema e executá-la, comunicando-se com o hardware onde o
arquivo será gravado. Esse hardware pode ser um disco rígido ou um pen-drive,
por exemplo. Ambos possuem uma tecnologia totalmente diferente, e cabe ao
sistema operacional ser capaz de se comunicar adequadamente com o dispositivo
em questão.
Por exemplo, no caso de dispositivos plug and play com interface de comunicaçãoUSB como um pen-drive ou HD externo, quando são plugados em um computador
pela primeira vez, surge uma mensagem de instalação do driver do dispositivo.
Instalar o driver de um novo periférico é a maneira do sistema operacional
"aprender" uma nova linguagem, para comunicar-se com um novo dispositivo.
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 10/30
O sistema operacional também encarrega-se do gerenciamento de processos e a
hierarquia de acesso dos processos em execução. Pode-se ter um sistema
operacional multitarefa, com cada processo em execução por uma fatia de tempo,
determinado pelo s.o.. Os processos também não podem ter acesso a qualquer
endereço de memória, pois dessa maneira poderiam provocar pane em outros
processos ou no funcionamento do próprio sistema operacional.
O acesso à memória é restrito, pois processos comuns são executados com o
microprocessador no modo protegido.
Aspectos importantes relativos aos sistemas operacionais: memória virtual,
entrada/saída de arquivos e processamento paralelo.
Memória virtual é uma técnica implementada na maioria dos sistemas
operacionais para fazer com que a máquina pareça ter mais memória do que na
verdade ela tem.
Uma maneira de se organizar a memória virtual é usar uma abstração
denominada arquivo. Para o sistema operacional um arquivo nada mais é do que
uma sequência de bytes.
A E/S de arquivos é feita por chamadas do sistema operacional para abertura,
leitura, escrita e fechamento de arquivos.
Em um sistema computacional com mais de um processador, cada um dos vários
processos cooperantes que rodam nele poderá ter seu próprio processador, de
modo a permitir que esses processos avancem simultaneamente. Por outro lado,
se houver apenas um processador disponível, o efeito do processamento paralelo
poderá ser simulado, fazendo com que o processador se dedique a um processo
de cada vez, por curto espaço de tempo, ou seja, o processador pode ser
compartilhado por vários processos.
 
O Sistema Operacional ( S.O. ) é um software cuja função é controlar a execução de
programas em execução, gerenciar os recursos do computador. No que se refere ao
controle de execução de programas, uma das funções mais importantes do S.O. é o
escalonamento de processos ou tarefas. Nesse caso, o S.O. determina qual dos
processos em andamento deve estar em execução em um determinado momento. O
hardware do computador possui timers que geram interrupções ao processador
periodicamente. E, a cada interrupção, uma rotina do S.O. é processada para realizar a
decisão de qual processo estará em execução na CPU. Um processo é basicamente, um
programa carregado na memória e em execução. Um computador tipicamente possui muitos
processos em andamento simultaneamente. Entretanto, um computador geralmente possui
um único processador ou poucos processadores. Em um sistema multitarefa, cada processo
possui um tempo limitado de execução sendo interrompido pelo S.O., e depois dando lugar a
um outro processo cuja execução continua de onde havia parado quando fora interrompido. O
escalonamento de processos é realizado rapidamente, de modo que o usuário possui a ilusão
de que mais de um programa esteja sendo executado simultaneamente em um sistema
multitarefa.
Já o gerenciamento de recursos controla o acesso de programas à memória, e dispositivos
periféricos de E/S ( I/O ). Por exemplo, se existem diversos processos em andamento, deve
haver setores da memória reservados para cada processo. Isso impede que um processo
acesse a área de memória usada por outro processo ( seja por acidente ou de forma
proposital ), causando consequências imprevisíveis ou falhas de segurança. Já o acesso a
dispositivos periféricos deve estar, do ponto de vista do programador de aplicativos, em um
nível de abstração tal que oculte os detalhes complexos do hardware, além de impossibilitar
que um código mal escrito provoque pane, ou até danos aos periféricos. Portanto, o programa
aplicativo comum, que roda em um determinado sistema operacional, não pode ter acesso a
todos os recursos do computador. A maneira de os sitemas de computação atuais impedirem
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 11/30
os acessos indevidos encontra-se na propriedade de o microprocessador funcionar em mais
de um modo. Por exemplo, os programas aplicativos comuns rodam com o processador em
modo usuário, em que não há disponibilidade a todas as instruções do nível ISA. Já o código
do kernel do sistema operacional roda com o processador no modo supervisor, possuindo
acesso a todo o set de instruções do microprocessador e a todos os endereços da memória.
Um bit no microprocessador determina se este está operando no modo usuário ou no modo
supervisor. A ideia, é que ao acessar um dispositivo de I/O, por exemplo, o programa em
modo usuário envie uma chamada de sistema ao S.O. que, rodando em modo supervisor,
decide se irá ou não atendê-la, quando atendê-la e como se comunicar corretamente com o
disposivo. Os detalhes sobre como a comunicação é realizada são implementados pelo
código do driver associado ao dispositivo em questão. 
O Sistema Operacional encontra-se entre os níveis de linguagem de máquina ( nível ISA ) e a
linguagem de montagem ( assembly ). A diferença entre essas duas linguagens consiste no
fato de a linguagem de montagem possuir instruções especiais denominadas chamadas de
sistema ( system calls ). As chamadas de sistema consistem em sub-rotinas implementadas
no sistema operacional que realizam a abstração com o hardware. Por exemplo, se um
software é escrito para abrir e editar um arquivo no disco rígido, é preferível que exista uma
abstração para deixar os detalhes da comunicação com o controlador do disco transparentes
ao programador. Cada tipo de disco pode ter sinais de controle distintos, além de detalhes,
como o controle do posicionamento a cabeça de leitura do disco, ou ainda o setor e a trilha
em que se encontra determinada parte do arquivo. Se o programador tivesse que se
preocupar com detalhes desse tipo, o desenvolvimento de programas teria um custo muito
elevado, já que esses seriam muito mais difíceis de ser escritos, e com muito mais trabalho.
Portanto, o programa, ao comunicar-se com o hardware utiliza como interface de abstração
as chamadas de sistema, que oculta do programador os detalhes e as peculiaridades de cada
diferente dispositivo de hardware. Sendo assim, as chamadas de sistema são sub-rotinas
implementadas no sistema operacional, que executam tarefas de baixo nível ( comunicação
com o hardware da máquina ).
A maioria dos programadores, utilizando linguagens de alto nível, nunca vê esse nível de
detalhe. Normalmente, os desenvolvedores de aplicações projetam programas de acordo com
uma interface de programação de aplicações ( API - Appliacation programming
interface ). A API especifica um conjunto de funções que estão disponíveis ao programador
de aplicações.
O S.O. também oferece um ambiente ao usuário final para interagir com o sistema. Essa
interface entre o usuário e o kernel é denominada Shell. Nos sistemas mais antigos, como no
UNIX e no MS-DOS, bem como nas primeiras versões do Linux, a interface com o usuário era
por meio de uma linha de comando ( CLI - Command Line Interface ). Atualmente, a
maioria dos sistemas possui uma interface gráfica e interativa com o usuário, ou seja, uma
GUI - Graphic User Interface, como é o caso do Mac OS e do Windows.
 
 Podemos então perceber, que uma das principais funções de um sistema operacional, é
realizar a interface entre o usuário/programador com o computador, por meio de abstrações.
Graças ao sistema operacional, a máquina aparenta ser mais simples do que realmente é,
tanto do ponto de vista do programador de aplicações quanto do usuário, Portanto, o S.O. é
uma espécie de máquina virtual, que oferece um ambiente convenienteao
programador/usuário e eficiente quanto à utilização dos recursos do sistema.
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 12/30
 
O sistema operacional geralmente oferece funcionalidades de suporte para as seguntes
tarefas:
 
- Execução de programas: para um programa ser executado, várias tarefas têm de ser
realizadas. Como o programa é armazenado no computador na forma de um arquivo, para a
execução ser realizada, o sistema operacional deve oferecer uma interface com o usuário
para que este possa colocar o programa em execução ( seja por uma linha de commando ou
por uma interface gráfica ); o S.O. deve ser capaz de localizar o arquivo no disco, realizar a
carga ( load ) do programa ( que é copiar o conteúdo do arquivo do arquivo em disco para a
memória do computador ), e colocar esse programa em execução. Essa última tarefa, colocar
o programa em execução, significa transferir o controle do computador do sistema
operacional para o programa. Já a tarefa de carga ( load ), significa executar um programa
utilitário do sistema chamado loader.
 
- Acesso a disposistivos de E/S: cada dispositivo de E/S ( I/O ) possui seu próprio conjunto
peculiar de instruções ou sinais de controle para operação. Por exemplo, apesar de arquivos
poderem ser armazenados tanto no disco rígido (HD ), quanto em uma mídia óptica, ou um
flash-drive ( como uma unidade SSD ou um pen-drive ), os sinais de controle são diferentes
para cada tipo de drive. Além do fato de o barramento para a comunicação de cada
dispositivo com o sistema também poder ser diferente ( IDE, SATA, USB, etc. ), cada um com
um diferente protocolo de comunicação. O sistema operacional é que cuida dos detalhes de
comunicação e controle do hardware, deixando usuários e programadores de aplicação em
um nível de abstração mais alto. Para o usuário o acesso ao arquivo pode se dar por meio de
um simples ícone, por exemplo. Já para o programador, o acesso ao arquivo se dá por
funções oferecidas pela linguagem de programação ( como por exemplo fopen(), fclose() da
linguagem C ), ou pelas chamadas de sistema,invocadas pelas funções das APIs. A parte
mais complexa de como operar com o hardware fica por conta do sistema operacional,
evitando que o desenvolvedeor de aplicações precise adquirir um conhecimento muito
profundo sobre cada dispositivo de hardware, e dimuindo a complexidade em programas ( e
consequentemente o custo de desenvolvimento e a probabilidade de erros ). Além disso, no
caso de sistemas utilizados por mais de um usuário simultaneamente, o sistema operacional
deve fornecer controle de acesso aos arquivos ( impedindo que um mesmo arquivo seja
editado por mais de um usuário ao mesmo tempo, gerando resultados imprevisíveis ).
 
- Detecção e reação aos erros: durante a execução de um programa, é possível ocorrerem
erros não previstos pelo programador. Tais como erros de divisão por zero ou por overflow
em operações aritméticas, tentativa de endereçar uma área da memória não permitida (
restrita ao sistema operacional ou a outro programa ), a impossibilidade de o sistema atender
a uma requisição do programa. Nesses casos o sistema operacional deve responder
eliminando a condição de erro, com o menor impacto possível pobre as outras aplicações em
execução. Essa resposta pode ir desde terminar a execução do programa que causou o erro
até tentar executar novamente a operação, ou simplesmente relatar a ocorrência do erro à
aplicação. Em situações como essa pode-se dizer que o sistema operacional gera uma
exceção. Exemplos de eventos que geram exceções são: divisão por zero, tentativa de
executar uma instrução com opcode não existente, tentativa de acesso a uma região
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 13/30
protegida da memória e falta de página. Exceções ocorrem devido a condições incomuns. Por
exemplo, ao invés de ser realizada antes uma verificação do valor do divisor, executando a
divisão somente se o divisor for diferente de zero, o programa simplesmente executa a
instrução de divisão, gerando automaticamente uma exceção caso o divisor possua valor
zero. Nesse caso a rotina que trata a exceção é executada.
 
Histórico
Os primeiros sistemas de processamento em lotes ( batch ) funcionavam da seguinte
maneira: havia uma fila de tarefas ( programas ) a serem executadas. Cada programa era
colocado para funcionar até devolver o resultado do processamento ou o tempo reservado
para ele terminar. O programa seguinte iniciava seu processamento após o término do
anterior. Os sistemas batch não possuíam interação com o usuário durante o processamento
de programas. Em um sistema desse tipo, também chamado monitor, o usuário não tem
mais acesso à máquina a partir do início do processamento. O monitor residente é o software
que controla a sequência de eventos para o processamento em lotes, portanto o monitor deve
estar residente na memória. Além do monitor residente, o monitor também é composto de
programas utilitários e de funções de uso comum.
 Entretanto, dispositivos de I/O são mais lentos do que a CPU. Sendo assim, é comum
existirem situações em que a tarefa em processamento depende da resposta de algum
dispositivo, deixando a CPU aguardando. Ou seja, nos primeiros sistemas em lotes, a CPU
permanecia ociosa pela maior parte do tempo, desperdiçando sua capacidade de
processamento.
A solução para esse problema surgiu com os sistemas que faziam uso de
multiprogramação. Nesses sistemas, enquanto um processo aguarda pela I/O, a CPU
começa a executar a tarefa seguinte. E dessa maneira, o tempo em que ela fica ociosa
diminui substancialmente. Entretanto, tais sistemas devem ter características que possibilitam
essa implementação, tais como:
proteção de memória - enquanto o programa 1 aguarda I/O, o programa 2 está em
execução. O que significa que o programa 1 encontra-se suspenso. Nesse caso, a memória
do sistema possui os dados em processamento de mais de um programa. Sendo assim, deve
haver uma política que impede que um programa acesse endereços de memória reservados
para outros programas, gerando resultados imprevisíveis. O mecanismo de proteção de
acesso à memória também deve proteger o próprio núcleo ( kernel ) do sistema operacional,
residente na memória principal. Porque há a possibilidade de um programa com erro ou um
código mal-intencionado tentar acessar essa área de memória provocando sérios prejuízos.
 temporização: já que as tarefas compartilham uma mesma CPU, sendo uma executada de
cada vez, por meio de uma multiplexação no tempo, cada tarefa possui um tempo limitado
de controle sobre o processador. Dessa maneira impede-se que uma tarefa use a CPU
sozinha impedindo que outras tarefas usem a CPU ( como em um caso de loop infinito, por
exemplo ). Quando uma tarefa é inicializada, o sistema operacional determina um tempo
limite dentro do qual ela possui o controle da CPU. Quando o timer do sistema chega a um
valor limite, esse tempo expira e o controle da CPU retorna ao sistema operacional. Esse
pode então passar o controle a uma outra tarefa em execução, por exemplo.
interrupções: o processador é informado sobre o tempo-limite do timer ou sobre um
dispositivo de I/O ter a resposta pronta devido a requisições de interrupção. Quando uma
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 14/30
requisição de interrupção é atendida, a CPU literalmente interrompe a tarefa em
processamento, para executar a rotina de tratamento de interrupção adequada.São as
interrupções que viabilizam que a CPU não fique constantemente lendo o estado de um
dispositivo de I/O para determinar se já está pronto ou não para uma transação de dados com
a CPU. Por exemplo, o mouse faz uso de interrupções para que o sistema operacionalatualize a posição do cursor na tela, quando o usuário digita algo no teclado, ou ainda quando
a impressora está pronta para receber novos dados. A diferença fundamental entre
exceção e interrupção é que a exceção é gerada por um evento síncrono ( quando é
resultado direto da execução do programa corrente, sendo gerada pelo próprio processador ),
e a interrupção é gerada por eventos assíncronos ( quando ocorre independentemente da
execução do programa corrente, sendo gerada por dispositivos externos ao processador ).
Requisições de interrupções podem ocorrer a qualquer momento durante a execução de um
programa, sendo gerada por timers dispositivos de I/O. Já exceções são geradas por
condições incomuns que podem surgir com a execução das instruções do programa, como,
por exemplo, uma divisão por zero.
O tratamento de uma interrupção é realizado da seguinte maneira:
- O processador salva o contexto: O valor dos registradores da CPU, para que, ao retornar
da rotina de tratamento de interrupção, as condições sejam as mesmas de quando ela foi
chamada, e a execução do programa corrente possa prosseguir normalmente. O principal
registrador a ser salvo é o PC ( program counter ), cuja função é apontar para o endereço da
instrução seguinte a ser buscada na memória. O valor corrente do PC é salvo em uma área
especial da memória chamada pilha.
- Desvia a execução para a rotina de tratamento de interrupção: O processador altera o
valor do PC para o endereço da primeira instrução da rotina de tratamento de interrupção.
Tipicamente, o endereço do tratador de interrupção é armazenado no vetor de interrupções.
- Após a execução da rotina de interrupção, é executada uma instrução de retorno de
interrupção. Essa instrução é similar à instrução RETURN, a ser processada no final de uma
sub-rotina, porém, além de recuperar o valor do PC da pilha, também recupera o conteúdo do
registrador de STATUS, onde estão armazenados os flags de status da última instrução
executada antes da interrupção.
Já o tratamento de uma exceção é similar ao tratamento de uma interrupção. O processador
salva o contexto, executa o tratador de exceção ( tipicamente, o endereço do tratador da
exceção no vetor de interrupções ), e, após executar a exceção, o tratador pode retornar ou
abortar o programa.
 
instruções privilegiadas: Para que programas não realizem acessos a dispositivos de I/O ou
a certos endereços da memória de maneira indevida, o processador possui instruções
privilegiadas que apenas são executadas pelo sistema operacional. A CPU deve possui pelo
menos dois modos de execução: o modo monitor que executa todas as instruções da
máquina, incluindo as privilegiadas, e o modo usuário para os demais programas. Um
programa de usuário deve então solicitar um acesso a dispositivos de I/O ao sistema
operacional, por meio de chamadas de sistema.
 
NÍVEL DE LINGUAGEM DE MONTAGEM ( ASSEMBLY )
 
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 15/30
 
O nível 4 é denominado nível de linguagem de montagem ( assembly language ).
Neste nível ocorre a tradução do programa original, expresso na linguagem fonte
para uma outra linguagem denominada linguagem alvo.
Dependendo da relação entre a linguagem fonte e a linguagem alvo, os tradutores
podem ser divididos em dois grupos. Quando a linguagem fonte for
essencialmente uma representação simbólica para uma linguagem de máquina
numérica, o tradutor é chamado de montador ( assembler ) e a linguagem fonte é
chamada de linguagem de montagem ( assembly ).
Por outro lado, quando a linguagem fonte for uma linguagem de alto nível e a
linguagem alvo for uma linguagem de máquina numérica ou uma representação
simbólica desta linguagem, o tradutor é chamado de compilador.
Uma linguagem de montagem pura é aquela na qual cada comando produz
exatamente uma instrução de máquina, ou seja, existe uma correspondência um
para um entre as instruções de máquina e os comandos de um programa
expresso em linguagem do montador.
 
 
NÍVEL DE LINGUAGEM ORIENTADA AO PROBLEMA
 
 
As linguagens do nível 5 são projetadas para serem usadas por programadores de
aplicação, com algum problema a ser resolvido. Tais linguagens são conhecidas
como linguagens de alto nível. Os programas escritos nestas linguagens são
convertidos para os níveis 3 ou 4 por tradutores conhecidos como compiladores.
 
 
Exemplos de um programa simples para imprimir uma mensagem na tela
em Linguagem de Alto Nível e em Assembly:
 
Usando uma linguagem do nível 5 ( linguagem C ):
 
#include <stdio.h>
int main( int argc, char *argv[] )
{
 printf( "Olá, mundo! \n" );
 return 0;
}
 
O mesmo exemplo em C++ :
 
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 16/30
#include <iostream>
using namespace std;
int main( int argc, char *argv[] )
{
 cout << " Olá mundo!" << endl;
 return 0;
}
 
O mesmo exemplo em Java:
 
public class Exemplo
{
 public static void main( String args[] )
 {
 System.out.println( " Ola mundo! " );
 }
}
 
E na linguagem do nível 4 ( assembly ou lingugem de montagem para
processadores da família x86 com sistema operacional Windows ou MS-DOS ). O
código executado é compatível com 16 bits. Repare que na linguagem assembly
são necessárias mais linhas de código:
 
.model tiny
.data
DB frase 'Olá, mundo!", $ ; Texto a ser exibido na tela.
.code
 org 0100h ; Endereço inicial do código.
 mov dx, frase ; Registrador DX aponta para o endereço da string do
texto.
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 17/30
 mov ah, 9 ; Função 9 da interrupção 21h para imprimir texto na
tela.
 int 21h ; Invoca a rotina da interrupção 21h.
 mov ah, 4ch ; Função 4C da interrupção 21h para sair do programa.
 int 21h ; Invoca a rotina da interrupção 21h.
.end
( Repare que o que é escrito à direita do ponto-e-vírgula são comentários que
servem apenas para o programador ter mais facilidade para entender o programa 
durante a edição do código, e não faz parte do código em linguagem de máquina
gerado posteriormente ).
Outros exemplos de trechos de código escritos em Linguagem de Montagem ( Assembly )
para diversas famílias de microprocessadores e microcontroladores:
 Um outro exemplo de trecho de código escrito em assembly para processadores
da família x86 ( presente em computadores pessoais ).
 
; ------------- Início da manipulação dos dados do arquivo encontrado
; ----- Abre o arquivo, obtendo o Handle
 mov dx, 9eh ; Endereço onde está o nome do arquivo encontrado.
 mov ax, 3d02h ; Abre o arquivo para leitura-escrita.
 int 21h
 ; O handle do arquivo foi obtido em AX mas deve
 mov bx, ax ; ser movido para BX para as próximas funções.
; ----- Obtém a data e hora da última alteração do arquivo.
 mov ah, 57h
 xor al, al ; mov al, 0
 int 21h
 lea di, [offset Horario + bp]
 mov ax, cx
 stosw
 lea di, [offset Data + bp]
 mov ax, dx 
 stosw
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 18/30
; ----- Salva a parte do arquivo que inevitavelmente será alterada,
; lendo e armazenando os primeiros bytes do arquivo a ser
; modificado. Para tanto o início do futuro hospedeiro deve
;ser lido e os primeiros bytes armazenados em Backup.
 lea dx, [offset Backup + bp]; Buffer onde os dados serão gravados.
 mov cx, bytes
 mov ah, 3fh
 int 21h
; ----- Descobre se o programa realmente é um .COM internamente
 lea si, [offset Backup + bp]
 lodsw
 cmp ax, 'ZM' ; Equivale a comparar com 'MZ'
 je Proximo1
 
A linguagem assebly ainda é utilizada principalmente na programação de
microcontroladores, que são computadores completos em um único chip, já que
possuem processador, memória e periféricos embutidos. Circuitos eletrônicos com
microcontroladores fazem parte dos chamados sistemas embarcados, que são
sistemas que possuem microcontroladores que conferem uma certa "inteligência"
a outros dispositivos, tais como eletrodomésticos, alarmes, fontes de energia,
cancelas eletrônicas, brinquedos, etc.
A seguir um exemplo de trecho de código escrito em assembly para um
microcontrolador da família 8051.
ORG 0000h ; VETOR DE RESET.
 SJMP STARTUP ; DESVIA PARA O CÓDIGO DE INICIALIZAÇÃO.
ORG 0003h ; ENDEREÇO DA INT0.
 NOP
 RETI
ORG 000Bh ; ENDEREÇO DO TIMER0
 NOP
 RETI
ORG 0013h ; ENDEREÇO DA INT1.
 NOP
 RETI
ORG 001Bh ; ENDEREÇO DO TIMER1.
 NOP
 RETI
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 19/30
ORG 0023h ; ENDEREÇO DA INTERRUPÇÃO SERIAL.
 NOP
 SJMP SERIALISR ; DESVIA PARA A ISR DA SERIAL.
 
 RETI
STARTUP: ; CÓDIGO DE INICIALIZAÇÃO.
 MOV P1, #00000000b ; PORT P1 INICIALMENTE ZERADO.
 MOV TMOD, #00100000b ; TIMER1 EM MODO 2 : 8 BITS COM AUTO-RELOAD.
 MOV TH1, #0FDh ; PRESET VALUE DO MODO 2 DO TIMER1.
 ; BAUD-RATE= 9600 bps
 MOV TL1, #0h ; CONTADOR INICIALMENTE EM ZERO.
 SETB TR1 ; LIGA O TIMER1.
 MOV SCON, #01010000b ; SERIAL NO MODO 1, COM BIT REN HABILITADO.
 MOV PCON, #00000000b ; SMOD= 0. SEM DOBRAR A FREQUÊNCIA DA SERIAL.
 
 MOV IP, #00010000b ; INTERRUPÇÃO SERIAL COM ALTA PRIORIDADE.
 MOV IE, #10010000b ; INTERRUPÇÃO SERIAL HABILITADA. COM EA= 1.
MAINLOOP: ; LAÇO PRINCIPAL DO PROGRAMA.
 NOP
 SJMP MAINLOOP ; LAÇO INFINITO.
SERIALISR: ; ROTINA DE TRATAMENTO DA INTERRUPÇÃO SERIAL.
 NOP
 MOV P1, SBUF ; MOVE O VALOR DO BUFFER SERIAL PARA O PORT P1.
 CLR RI ; RESSETA O FLAG DA INTERRUPÇÃO DA SERIAL.
 
 RETI ; RETORNO DA INTERRUPÇÃO.
 END ; FIM DO PROGRAMA.
 
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 20/30
Microcontrolador 89S8252, da família 8051 em diversos encaplusamentos. O 8051
foi o pioneiro entre os microcontroladores.
Para exemplificar como a linguagem assembly muda de acordo com a arquitetura
do processador, segue um outro trecho de código escrito em assebly.
Dessa vez um código assembly para um microcontrolador da família PIC16:
RST CODE 0x0000 ; VETOR DE RESET
 GOTO STARTUP ; DESVIA PARA O CÓDIGO DE INICIALIZAÇÃO.
ISR CODE 0x00004 ; VETOR DE INTERRUPÇÃO.
 MOVWF W_TEMP ; SALVA A IMAGEM DOS REGISTRADORES
PRINCIPAIS.
 SWAPF STATUS, W
 BCF STATUS, RP0
 MOVWF STATUS_TEMP
 BTFSS INTCON, T0IF ; TESTA SE A INTERRUPÇÃO FOI GERADA PELO
TIMER0.
 GOTO RESTORE_REGS ; 
 BCF INTCON, T0IF ; RESSETA BIT QUE SINALIZA A
INTERRUPÇÃO.
 INCF DELAY_COUNT, F ; INCREMENTA O CONTADOR DE ATRASO.
 MOVLW D'3'
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 21/30
 SUBWF DELAY_COUNT, W ; APÓS 3 ITERAÇÕES VOLTA.
 BNZ RESTORE_REGS ; ENQUANTO DELAY_COUNT != 3, RETORNA DA
INTERRUPÇÃO.
 CLRF DELAY_COUNT ; RESSETA O CONTADOR DELAY_COUNT.
 INCF CONTADOR, F ; INCREMENTA O CONTADOR. ( CONTADOR=
CONTADOR + 1.)
 MOVLW D'100' ; SE CONTADOR == 100, CONTADOR= 0.
 SUBWF CONTADOR, W
 BNC RESTORE_REGS
 CLRF CONTADOR
RESTORE_REGS ; RESTAURA OS REGISTRADORES WREG E STATUS.
 SWAPF STATUS_TEMP, W
 MOVWF STATUS
 SWAPF W_TEMP, F
 SWAPF W_TEMP, W
 RETFIE ; RETORNA DA INTERRUPÇÃO.
 
O microcontrolador PIC contém todos os elementos necessários de um
computador em um único chip, porque contém um processador, memória e
periféricos embutidos.
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 22/30
 
Naturalmente, é bem mais fácil programar em assembly do que diretamente em
código de linguagem de máquina ( os primeiros computadores eram programados
em linguagem de máquina binária ! ).
Entretanto, mais fácil é programar em linguagens de médio e alto nível, tais como
as linguagens descendentes de Basic, C e Pascal. Essas linguagens estão
estruturadas de uma forma mais próxima da descrição de um algoritmo, e mais
distantes da linguagem da máquina.
É fácil perceber que, quanto mais alto o nível da linguagem mais fácil é o
aprendizado de programação, pois a escrita e leitura do código é mais intuitiva e
parecida com a linguagem humana.
Além disso, uma linguagem de alto nível é mais genérica, podendo ser traduzida
para a linguagem de máquina de diversos tipos de microprocessadores.
Já a linguagem de máquina ( de baixo nível ) é específica de uma determinada
família de microprocessadores.
Em sistemas embarcados ( microcontrolados ), também é possível programar em
linguagens de alto nível ( como linguagem C ) ao invés de linguagem assembly.
Por exemplo, nos microcontroladores PIC e no Arduino.
 
 O Arduino é uma plataforma que contém todos os elementos de um
computador em uma única placa de fácil programação.
 
 
Bibliografia
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 23/30
TANENBAUM, A. S. Organização estruturada de computadores. 5ª. Ed. São
Paulo: Pearson: Prentice Hall, 2007.
 
WEBER, R. F. Fundamentos de Arquitetura de Computadores, 4º Ed. Porto
Alegre: Bookman, 2012
 
MACHADO, F. B., MAIA F. P. Arquitetura de Sistemas Operacionais, 5º Ed. Rio
de Janeiro: LTC, 2013.
Exercício 1:
Considerando as afirmações abaixo, assinale a alternativa correta sobre máquinas
multiníveis:
I. É possível considerar a linguagem de máquina simples e de baixo nível e a
linguagem voltada ao usuário de alto nível e complexa.
II. Cada linguagem usa a sua linguagem antecessora como base, de modo que
um computador que use essa técnica pode ser visto como um conjunto de
camadas ou níveis.
III. O fato de o programador não estar ciente de como o nível que ele está
utilizando é implementado leva ao conceito de projeto estruturado de máquinas
virtuais.
IV. Os níveis de máquinas virtuais que podem ser implementados são limitados.
V. Para escrever um programa numa máquina virtual não é preciso se preocupar
com as máquinas abaixo desse nível.
A)
Apenas as afirmativas I, II e III estão corretas.
B)
Apenas as afirmativas II, III e V estão corretas.
C)
Apenasas afirmativas II, IV e V estão corretas.
D)
Apenas as afirmativas I, II, III e IV estão corretas.
E)
Apenas as afirmativas I, II, III e V estão corretas.
Comentários:
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 24/30
Essa disciplina não é ED ou você não o fez comentários
Exercício 2:
O projeto da maioria dos computadores atuais incorpora o conceito de máquina
multinível; algumas delas com até seis níveis. Neste contexto, o nível mais baixo
da arquitetura computacional é:
A)
o nível de Microarquitetura
B)
o nível de Lógica Digital
C)
o nível ISA ( Instruction Set Architecture )
D)
o nível do Sistema Operacional.
E)
o nível de Compilação.
Comentários:
Essa disciplina não é ED ou você não o fez comentários
Exercício 3:
(FCC - 2012 - TRT - 11ª Região (AM) - Técnico Judiciário - Tecnologia da
Informação)
Segundo Andrew S. Tanenbaum, numa conjugação de hardware, linguagens
interpretadas e linguagens traduzidas, o computador pode ser dividido em uma
máquina de seis níveis. Em um desses níveis, os objetos mais interessantes são
denominados PORTAS, cada uma, contendo uma ou mais entradas para sinais
digitais (representando 0 ou 1) e computando como saída alguma função simples
dessas entradas, como AND ou OR . Trata-se do nível de arquitetura:
A)
lógico digital.
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 25/30
B)
de microarquitetura.
C)
do sistema operacional da máquina.
D)
de conjunto de instruções.
E)
de linguagem de montagem.
Comentários:
Essa disciplina não é ED ou você não o fez comentários
Exercício 4:
(FCC - 2011 - NOSSA CAIXA DESENVOLVIMENTO - Analista de Sistemas)
Na arquitetura de computadores, a ALU (Unidade Lógica e Aritmética) é um
circuito que se conecta aos registradores para formar um caminho de dados. Em
termos de linguagem de máquina multiníveis, a ALU situa-se no nível:
A)
lógico digital.
B)
de microarquitetura.
C)
de arquitetura de conjunto de instruções.
D)
do sistema operacional de máquina.
E)
de linguagem de montagem.
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 26/30
Comentários:
Essa disciplina não é ED ou você não o fez comentários
Exercício 5:
(FCC - 2010 - TRF - 4ª REGIÃO - Técnico Judiciário - Informática)
ASSEMBLER é o programa utilizado para executar os códigos fontes criados em
ASSEMBLY. No contexto da arquitetura de computadores em camadas, esses
termos estão fortemente associados à camada de nível:
A)
microarquitetura
B)
conjunto de instruções
C)
sistema operacional
D)
linguagem de montagem
E)
linguagem orientada a problemas
Comentários:
Essa disciplina não é ED ou você não o fez comentários
Exercício 6:
Qual é a linguagem que utiliza mnemônicos para representar Opcodes de
instruções em linguagem de máquina?
A)
Assembly,
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 27/30
B)
Linguagem digital binária.
C)
Opcodes Java.
D)
Linguagem de máquina do processador.
E)
Linguagem de microprogramação.
Comentários:
Essa disciplina não é ED ou você não o fez comentários
Exercício 7:
Que tipo de processador utiliza microprogramação?
A)
PIC
B)
ARM
C)
RISC
D)
CISC
E)
MIPS
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 28/30
Comentários:
Essa disciplina não é ED ou você não o fez comentários
Exercício 8:
Assinale a alternativa que mostra os níveis de linguagens, do mais baixo para o
mais alto:
A)
Nível de micro-arquitetura; nível de linguagem de máquina; nível de sistema
operacional; nível de linguagem de montagem; nível de lógica digital; nível de
linguagem orientada à aplicação
B)
Nível de lógica digital; nível de micro-arquitetura; nível de linguagem de
montagem; nível de linguagem de máquina; nível de linguagem orientada à
aplicação.
C)
 Nível de lógica digital; nível de linguagem de montagem; nível de máquina; nível
linguagem de sistema operacional; nível de linguagem orientada à aplicação.
D)
Nível de lógica digital; nível de micro-arquitetura; nível de linguagem de máquina;
nível do sistema operacional; nível de linguagem de montagem; nível de
linguagem orientada à aplicação
E)
Nível de lógica digital; nível de micro-arquitetura; nível de linguagem de máquina;
nível do sistema operacional; nível de linguagem orientada à aplicação; nível de
linguagem de montagem
Comentários:
Essa disciplina não é ED ou você não o fez comentários
Exercício 9:
( IESES - 2010 - CRM-DF - Assistente de Tecnologia da Informação )
Sobre Microprograma é CORRETO afirmar que:
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 29/30
A)
É um pequeno programa escrito em uma linguagem de “mais baixo nível” e
implementado em hardware.
B)
O firmware não é um exemplo de Microprograma.
C)
O Microprograma é utilizado apenas em microcomputadores.
D)
É um pequeno programa escrito em linguagem de “alto nível”.
E)
é uma instrução do sistema operacional
Comentários:
Essa disciplina não é ED ou você não o fez comentários
Exercício 10:
O nível da microarquitetura situa-se logo acima do nível da lógica digital e tem por finalidade:
A)
Implementar o caminho dos dados.
B)
Implementar a camada ISA (Instruction Set Architecture).
C)
Permitir a realização das operações de acesso à memória.
D)
Controlar os dispositivos internos do processador.
02/03/2020 UNIP - Universidade Paulista : DisciplinaOnline - Sistemas de conteúdo online para Alunos.
https://online.unip.br/imprimir/imprimirconteudo 30/30
E)
Implementar os comandos do sistema operacional.
Comentários:
Essa disciplina não é ED ou você não o fez comentários
Exercício 11:
(FCC - 2010 - TRE-AM - Analista Judiciário - Tecnologia da Informação)
Numa máquina estruturada multinível, é o nível essencial para as máquinas CISC
(Complex Instruction Set Computer), mas que inexiste nas máquinas RISC
(Reduced Instruction Set Computer). Trata-se do nível:
A)
do sistema operacional.
B)
de lógica digital.
C)
de microprogramação.
D)
convencional de máquina.
E)
do montador.
Comentários:
Essa disciplina não é ED ou você não o fez comentários

Continue navegando