Você está na página 1de 47

CONCEITOS DE

HARDWARE E SOFTWARE
PARA S.O.

Sistemas Operacionais

Aula 02
2024
INTRODUÇÃO

● Computador
“É um sistema complexo com muitos componentes”
TANEMBAUM, 2016

● Sistema Operacional
“É apenas um conjunto de rotinas executado pelo
computador”
MACHADO, 2014

2
INTRODUÇÃO

Funções do S.O.
● Facilidade de acesso aos recursos de sistema
● Compartilhamento de recursos

Adaptado de TANEMBAUM 2016, pág 1.

3
INTRODUÇÃO

Para compreender os conceitos de Sistemas Operacionais,


precisamos conhecer os conceitos de arquitetura e
organização dos sistemas computacionais.
● Hardware
○ Arquitetura de Von Neumann
○ Processador e Pipelining
○ Sistema hierárquico de memória
○ Barramento, Entrada e Saída
● Software
○ Tradutor e Interpretador
○ Linker (Ligador) e Depurador
○ Loader

4
CONCEITOS DE HARDWARE

5
HARDWARE

Arquitetura de Von Neumann


● É um modelo fundamental para a construção de
computadores digitais modernos.
○ 1945 por John von Neumann (consultor do ENIAC)
● Composto por:
○ Memória
○ Unidade Central de Processamento
○ Dispositivos de Entrada e Saída

6
ARQUITETURA DE VON NEUMANN

Adaptado de STALLINGS 2017.

7
ARQUITETURA DE VON NEUMANN

Unidade Central de Processamento


● Controle
○ organiza o fluxo dos dados e programas na arquitetura
● Unidade Lógica Aritmética
○ manipulação dos dados

Memória
● Compartilhada entre Dados do Usuário e Programas
○ simplificação do controle pelo processador

Entrada e Saída
● Comunicação com o mundo externo
○ facilidade de inserir programas e dados

8
SISTEMA COMPUTACIONAL - ALTA ABSTRAÇÃO

Adaptado de STALLINGS 2017. Vários componentes e sinais foram omitidos para simplificar (alta abstração).

9
HARDWARE - CPU

Unidade Central de Processamento (CPU)


● É o componente que gerencia todo o sistema
computacional
○ controla as ações de todos os outros componentes
● Principal função
○ Buscar e Executar instruções presentes na Memória
■ operando lógica, aritmética ou de movimentação sobre os
dados do usuário
● Contém um espaço de armazenamento interno
○ Armazenamento Local (Registradores)

10
HARDWARE - CPU - COMPONENTES

Registrador de Instrução - RI
● Armazenamento temporário da instrução à ser
executada
Interpretador / Controle
● Decodifica e controla a Instrução presente em RI
Program Counter - PC
● Mantém o endereço de memória da próxima instrução
a ser executada

11
HARDWARE - CPU - COMPONENTES

Registrador de Endereço de Memória - MAR


● Memory Access Register
● É o caminho de saída do endereço a ser buscado
Registrador de Dados de Memória - MBR
● Memory Buffer Register
● É o caminho bidirecional dos dados e instruções
buscados ou guardados em memória
Registradores de Endereço e Dados de Entrada e Saída
● Semelhantes ao MAR e MBR, porém, voltados para
dispositivos de Entrada e Saída
● E/S MAR e E/S MBR

12
HARDWARE - CPU - COMPONENTES

Armazenamento Local - Banco de Registradores


● Armazenam os dados para serem processados e seus
resultados internamente à CPU
● São enviados à memória se necessário
Unidade Lógica e Aritmética Geral (ULA)
● Local onde os dados dos registradores são copiados,
transformados e retornados aos registradores
● Manipulação / processamento das informações

13
HARDWARE - CPU - COMPONENTES

Ponteiro para Pilha de Programa - Stack Pointer - SP


● Informações sobre o programa que está em execução
○ Estrutura de dados para funções

Registrador de Estado de Programa - Program Status


Word - PSW
● Armazena o Estado do programa em execução
● Flags em geral
● Utilizado para trocar contexto dentro da CPU
○ tempo compartilhado

14
HARDWARE - CPU - CICLO DE INSTRUÇÃO

Ciclo de Instrução
● É o conjunto de ações para que o CPU execute uma
instrução

Adaptado de STALLINGS 2017.

○ até o programa encerrar

15
HARDWARE - CPU - CICLO DE INSTRUÇÃO

Ciclo de Instrução
● Pode ser dividido em dois (ou mais) estágios

Adaptado de STALLINGS 2017.

16
CPU - CICLO DE INSTRUÇÃO - BUSCA

17
CPU - CICLO DE INSTRUÇÃO - EXECUÇÃO

*Outros Modos de Endereçamento não foram representados.

18
SISTEMA COMPUTACIONAL - ALTA ABSTRAÇÃO

Adaptado de STALLINGS 2017. Vários componentes e sinais foram omitidos para simplificar (alta abstração).

19
HARDWARE - CPU - PIPELINE

20
HARDWARE - CPU - PIPELINE

Aproveita os estágios ociosos para outras instruções


● falso paralelismo
● conceito de linha de produção aplicado à execução das
instruções
○ aumenta a vazão de instruções por ciclo
● Divide o ciclo de instrução em mais estágios
○ entre 5 até 15
○ nos exemplos, serão usados 5 estágios

21
HARDWARE - CPU - PIPELINE EXEMPLO

5 Estágios

22
HARDWARE - CPU - PIPELINE EXEMPLO

Abordagem SEM pipeline


● executar uma única instrução

23
HARDWARE - CPU - PIPELINE EXEMPLO

Abordagem COM pipeline


● executar até 5 instruções em pseudo-paralelismo

24
HARDWARE - CPU - PIPELINE

Problemas com Pipeline


● Hazard de dados
○ instruções na sequência com dependência de dados
■ ex.: b = b*(a+b)
● Hazard de recursos
○ instruções no pipeline que utilizam o mesmo recurso ao
mesmo tempo
■ ex.: memória com apenas 1 porta de leitura
● Hazard de controle
○ instruções com desvios condicionais
■ ex.: comandos condicionais e laços de repetições

25
HARDWARE - HIERARQUIA DE MEMÓRIAS

Memória Ideal não tangível


● Não volátil
○ keep your data forever!
● Energeticamente eficiente
○ battery life saver!
● Durável e Confiável
○ not Hulk Smash!
● Removível
○ everywhere!

Não existe memória com estas características!

26
HARDWARE - HIERARQUIA DE MEMÓRIAS

Solução encontrada
● Organizar as memórias em um sistema hierárquico
○ baixa latência, custo alto, porém, baixa capacidade
■ nível hierárquico mais alto
■ dados em processamento ou de interesse
■ alta frequência de acesso
○ alta latência, custo baixo, porém, alta capacidade
■ nível hierárquico mais baixo
■ dados armazenados definitivamente
■ baixa frequência de acesso

27
HARDWARE - HIERARQUIA DE MEMÓRIAS

Adaptado de STALLINGS 2017 e AMBROSINI, 2015.

28
HARDWARE - HIERARQUIA DE MEMÓRIAS

O por que a hierarquia funciona?


● Localidade de Referência
○ DENNING, Peter J. The Locality Principle. 1968, rev 2008.
○ Localidade de Referência Temporal
■ referências ao mesmo endereço ao longo do tempo
■ ex.: instruções de um laço de repetição
○ Localidade de Referência Espacial
■ referências aos endereços vizinhos
■ ex.: elementos de um vetor

29
HARDWARE - HIERARQUIA DE MEMÓRIAS

Acesso aos dados na hierarquia

● HIT
○ palavra é encontrada no nível procurado
● MISS
○ palavra não está no nível procurado, busca passa para o
próximo nível

30
HARDWARE - MEMÓRIA PRINCIPAL

Memória Principal
● Armazenamento volátil e de alto desempenho
○ dados e instruções dos programas/processos
● Composto por vetor de Células
○ cada célula armazena 1 bit
○ organiza-se as células em palavras de 8 bits (1 byte)
■ palavra
● Endereçamento por palavra
○ Exemplo: capacidade de 1024 bits (1 KiB)
■ 8 bits por palavra
■ 1024 / 8 = 128 palavras endereçáveis

31
HARDWARE - MEMÓRIA PRINCIPAL

Memória Principal
● Contém portas de Endereço e Dados
○ MAR e MBR
○ capacidade de endereçamento = núm de bits em MAR
■ log2(capacidade de endereços) * tamanho da palavra
○ tamanho da palavra = núm bits de MBR
● Endianness (Extremidade)
○ dados são maiores do que as palavras endereçáveis
■ little-endian
● Least Significant Byte (LSB) no endereço baixo
● padrão das arquiteturas x86
■ big-endian
● Most Significant Byte (MSB) no endereço baixo
32
HARDWARE - MEMÓRIA PRINCIPAL

33
CONCEITOS DE SOFTWARE

34
SOFTWARE

Interface entre o usuário e o hardware


● Softwares utilitários
○ programas auxiliares de um Sistema Operacional
■ Tradutor
■ Interpretador
■ Linker
■ Loader
■ Depurador
● Softwares aplicativos
○ programas criados para os usuários

35
SOFTWARE - TRADUTOR

Componente de software que traduz um programa escrito


em linguagem de montagem para um código-objeto.
● Linguagem de Montagem
○ Linguagem com a qual programadores constroem soluções
executáveis
○ Mais amigável para humanos do que a linguagem da máquina.

linguagem de montagem linguagem de máquina


add eax,ebx 0xd801
(código executável)

36
SOFTWARE - TRADUTOR

● Código-objeto (programa-objeto)
○ É a solução desenvolvida pelo programador já em linguagem
aceita pela máquina (CPU)
○ Não significa que é executável (ainda)
■ não é um código-executável
■ chamada a funções de bibliotecas externas
linguagem C
printf pertence à biblioteca stdio.h

○ uma vez criado o código-objeto, este poderá ser reutilizado na


máquina alvo inúmeras vezes

37
SOFTWARE - TRADUTOR

Dois tipos
● Montador
○ linguagem de montagem para Código-objeto
■ linguagem de montagem é particular de cada arquitetura
de computador (máquina)
○ pouca otimização no código do usuário
● Compilador
○ linguagens de alto nível para linguagem de montagem
○ normalmente, aplica otimizações no código do usuário
○ chama montador e outros para gerar um código executável
final

38
SOFTWARE - TRADUTOR

39
SOFTWARE - INTERPRETADOR

Componente de software que interpreta comandos de um


programa escrito em linguagem de alto nível e traduz
diretamente para linguagem de máquina para execução.
● não gera um código-objeto
○ gera comando-objeto
○ deste modo, toda vez que o usuário deseja executar o
programa, este faz à partir da interpretação dos comandos do
código-fonte

40
SOFTWARE - INTERPRETADOR

41
SOFTWARE - TRADUTOR VS INTERPRETADOR

TRADUTOR INTERPRETADOR

Tradução Todo o código-fonte Comando por comando

Código-objeto Sim Não

Desempenho relativo rápido lento

Execução não requer código-fonte requer código-fonte

somente máquina alvo qualquer máquina com


Execução
não requer compilador interpretador

Atualizações refazer processo somente interpretar

Linguagem C, C++, Rust, GO Javascript, Lua, Python*

42
SOFTWARE - LINKER

É um utilitário que gera, a partir de um ou mais


módulos-objeto, um único programa executável.
● resolve todas as referências simbólicas do
código-objeto
○ anexando as funções de bibliotecas externas
■ outros códigos-objetos
○ cria e anexa o cabeçalho do executável
■ carregamento, mapeamento em memória e execução
■ exemplo: elf64

43
SOFTWARE - LINKER

44
SOFTWARE - LOADER

É o utilitário que carrega na memória principal um


código-executável para ser executado. O procedimento de
carga varia com o código gerado pelo linker.
● Cabeçalho
● Normalmente é por carregamento relocável
○ o código-objeto pode ser carregado em qualquer lugar da
memória disponível

45
SOFTWARE - DEPURADOR

É o utilitário que usuário utiliza para acompanhar toda a


execução de um programa a fim de detectar erros na sua
lógica.
● depurar é um dos estágios de desenvolvimento
○ acompanhar a execução de cada comando do código-fonte
○ visualizar e alterar valores das variáveis durante a execução
pelo depurador
○ breakpoints para locais alvo
○ watchpoints para variáveis avaliadas

46
REFERÊNCIAS

AMBROSINI, D. Persistent-memory awareness in operating systems. Tese de


Doutorado.

MACHADO, F. B. Arquitetura de sistemas operacionais. 5ª ed. LTC, 2014.

SILBERSCHATZ, A. Fundamentos de sistemas operacionais, 9. ed. LTC, 2015.

TANEMBAUM, A. S. Sistemas operacionais modernos. 4ª ed. Pearson


Education do Brasil, 2016.

STALLINGS, W. Arquitetura e Organização de Computadores. 10ª ed. Pearson


Education do Brasil, 2017.

Imagens adaptadas de xkcd.com (licença CC BY-NC 2.5)

47

Você também pode gostar